package com.ty.skysystem.entity;

import com.baomidou.mybatisplus.annotation.*;

import java.math.BigDecimal;
import java.io.Serializable;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.ty.common.validator.group.SaveGroup;
import com.ty.common.validator.group.UpdateGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;

/**
 * 调度作业信息表: 用于存放和管理调度作业信息 字段名: carriers_id => 对应表: carriers 字段名: truck_id => 对应表: truck 字段名:
 * user_id=> 对应表: user
 *
 * @author tianyuzhu
 * @email 1659770218@QQ.COM
 * @date 2020-12-11 16:01:00
 */
@Data
@TableName("scheduling")
@ApiModel("调度任务信息实体类")
public class SchedulingEntity implements Serializable {
  private static final long serialVersionUID = 1L;

  /** 调度编号(自增) */
  @Null(
      message = "新增调度任务时不能携带ID",
      groups = {SaveGroup.class})
  @NotNull(
      message = "修改调度任务时需要携带ID",
      groups = {UpdateGroup.class})
  @TableId(value = "scheduling_id", type = IdType.AUTO)
  @ApiModelProperty("调度编号(自增)")
  private Long schedulingId;
  /** 出发时间 */
  @Null(
      message = "不支持修改出发时间",
      groups = {UpdateGroup.class})
  @ApiModelProperty("出发时间")
  private Date startTime;
  /** 承运单编号 */
  @NotNull(
      message = "承运单编号不能为空",
      groups = {SaveGroup.class})
  @ApiModelProperty("承运单编号")
  private Long carriersId;
  /** 车辆编号 */
  @NotNull(
      message = "车辆编号不能为空",
      groups = {SaveGroup.class})
  @ApiModelProperty("车辆编号")
  private Long truckId;
  /** 油费 */
  @ApiModelProperty("油费")
  private BigDecimal oilCost;
  /** 过桥费 */
  @ApiModelProperty("过桥费")
  private BigDecimal toll;
  /** 罚款 */
  @ApiModelProperty("罚款")
  private BigDecimal fine;
  /** 其他费用 */
  @ApiModelProperty("其他费用")
  private BigDecimal otherCost;
  /** 合计成本 */
  @ApiModelProperty("合计成本")
  private BigDecimal totalCost;
  /** 调度员 */
  @JsonInclude(JsonInclude.Include.NON_NULL)
  @ApiModelProperty("调度员")
  private Long userId;
  /** 备注 */
  @ApiModelProperty("备注")
  private String remark;
  /** 1 表示删除， 0 表示未删除 */
  @ApiModelProperty("逻辑删除 1 表示删除， 0 表示未删除")
  @TableLogic
  @JsonInclude(JsonInclude.Include.NON_NULL)
  private Integer isDeleted;
  /** 调度时间(创建时间) */
  @ApiModelProperty("调度时间(创建时间)")
  private Date createTime;
  /** 修改时间 */
  @ApiModelProperty("修改时间")
  private Date updateTime;
  /** 调度员姓名 */
  @TableField(exist = false)
  private String userName;
}
